#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include "Error.h"

static char __esErrorMessage[115] = {};
char* EsErrorCodeString(int errorCode)
{
	memset(__esErrorMessage, 0, sizeof(__esErrorMessage));
	sprintf(__esErrorMessage, "erfolgreich");
	if (errorCode > -1) return __esErrorMessage;

	switch (errorCode)
	{
		case -106: sprintf(__esErrorMessage, "(-106) Ung\x81 \bltige TMD bei der Nutzung von ES_OpenContent oder Zugriff verweigert."); break;
		case -1009: sprintf(__esErrorMessage, "(-1009) Lese Fehler."); break;
		case -1010: sprintf(__esErrorMessage, "(-1010) Schreib Fehler."); break;
		case -1012: sprintf(__esErrorMessage, "(-1012) Ung\x81 \bltiger Signaturen Typ."); break;
		case -1015: sprintf(__esErrorMessage, "(-1015) Ung\x81 \bltiger Wert f\x81 \br byte in 0x180 im Ticket (g\x81 \bltig:0,1,2)"); break;
		case -1017: sprintf(__esErrorMessage, "(-1017) Falsche Ein- oder Ausgangsgr\x94 \b\xE1 \be, falsche Gr\x94 \b\xE1 \be f\x81 \br einen Teil des Vektors, Vektor Angleichungsprobleme, nicht existierende ioctl."); break;
		case -1020: sprintf(__esErrorMessage, "(-1020) Konsolen ID stimmt nicht \x81 \bberein"); break;
		case -1022: sprintf(__esErrorMessage, "(-1022) Inhalt stimmt nicht mit dem hash in der TMD \x81 \bberein."); break;
		case -1024: sprintf(__esErrorMessage, "(-1024) Speicher Zuweisungsfehler."); break;
		case -1026: sprintf(__esErrorMessage, "(-1026) Fehlerhafte Zugriffsrechte."); break;
		case -1028: sprintf(__esErrorMessage, "(-1028) Kein Ticket installiert."); break;
		case -1029: sprintf(__esErrorMessage, "(-1029) Installiertes Ticket/TMD ist ung\x81 \bltig."); break;
		case -1035: sprintf(__esErrorMessage, "(-1035) Es ist schon ein Titel mit einer h\x94 \bheren Version installiert."); break;
		case -1036: sprintf(__esErrorMessage, "(-1036) Ben\x94 \btigte Systemversion (IOS) ist nicht installiert."); break;
		case -2008: sprintf(__esErrorMessage, "(-2008) Ung\x81 \bltige/r Parameter."); break;		
		case -2011: sprintf(__esErrorMessage, "(-2011) Signaturen Pr\x81 \bfung fehlgeschlagen."); break;
		case -2013: sprintf(__esErrorMessage, "(-2013) Schl\x81 \bsselring ist voll (enth\x84 \blt 0x20 Schl\x81 \bssel)."); break;
		case -2014: sprintf(__esErrorMessage, "(-2014) Schlechte L\x84 \bnge (!=20)"); break;
		case -2016: sprintf(__esErrorMessage, "(-2016) Unzugeordnete Daten."); break;
		case -4100: sprintf(__esErrorMessage, "(-4100) Falsche Ticket-, Cert Gr\x94 \b\xE1 \be oder ung\x81 \bltige Ticket-, Cert Daten"); break;
		default: sprintf(__esErrorMessage, "(%d) Unbeannter Fehler", errorCode);
	}
	
	return __esErrorMessage;	
}

static char __fsErrorMessage[50] = {};
char* FsErrorCodeString(int errorCode)
{
	memset(__fsErrorMessage, 0, sizeof(__fsErrorMessage));
	sprintf(__fsErrorMessage, "Success");
	if (errorCode > -1) return __fsErrorMessage;

	switch (errorCode)
	{
		case -1: sprintf(__fsErrorMessage, "(-1) Zugriff Verweigert."); break;
		case -2: sprintf(__fsErrorMessage, "(-2) Datei existiert."); break;
		case -4: sprintf(__fsErrorMessage, "(-4) Ung\x81 \bltige Eingabe."); break;
		case -6: sprintf(__fsErrorMessage, "(-6) Datei nicht gefunden."); break;
		case -8: sprintf(__fsErrorMessage, "(-8) Ressource besch\x84 \bftigt."); break;
		case -12: sprintf(__fsErrorMessage, "(-12) Zur\x81 \bck auf ECC Fehler."); break;
		case -22: sprintf(__fsErrorMessage, "(-22) Zuteilung w\x84 \bhrend der Anfrage fehlgeschlagen."); break;
		case -102: sprintf(__fsErrorMessage, "(-102) Genehmigung verweigert."); break;
		case -103: sprintf(__fsErrorMessage, "(-103) Zur\x81 \bck wegen \"korrupten\" NAND."); break;
		case -105: sprintf(__fsErrorMessage, "(-105) Datei existiert."); break;
		case -106: sprintf(__fsErrorMessage, "(-106) Datei nicht gefunden."); break;
		case -107: sprintf(__fsErrorMessage, "(-107) Zu viele fds ge\x94 \bffnet."); break;
		case -108: sprintf(__fsErrorMessage, "(-108) Speicher ist voll."); break;
		case -109: sprintf(__fsErrorMessage, "(-190) Zu viele fds ge\x94 \bffnet."); break;
		case -110: sprintf(__fsErrorMessage, "(-110) Pfadangabe ist zu lang."); break;
		case -111: sprintf(__fsErrorMessage, "(-111) FD bereits ge\x94 \bffnet."); break;
		case -114: sprintf(__fsErrorMessage, "(-114) Zur\x81 \bck auf ECC Fehler."); break;
		case -115: sprintf(__fsErrorMessage, "(-115) Verzeichnis nicht leer."); break;
		case -116: sprintf(__fsErrorMessage, "(-116) maximale Verzeichnis Tiefe \x81 \bberschritten."); break;
		case -118: sprintf(__fsErrorMessage, "(-118) Ressource besch\x84 \bftigt."); break;
		case -119: sprintf(__fsErrorMessage, "(-119) Schwerwiegender Fehler."); break;
		default: sprintf(__fsErrorMessage, "(%d) Unbeannter Fehler", errorCode);
	}

	return __fsErrorMessage;
}